package org.stvd.core.util.convert;

import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;

public class Byte4Check {
    public static String filterOffUtf8Mb4(String text) throws UnsupportedEncodingException {
        byte[] bytes = text.getBytes("UTF-8");
        ByteBuffer buffer = ByteBuffer.allocate(bytes.length);
        int i = 0;
        while (i < bytes.length) {
            short b = bytes[i];
            if (b > 0) {
                buffer.put(bytes[i++]);
                continue;
            }
            b += 256;
            if ((b ^ 0xC0) >> 4 == 0) {
                buffer.put(bytes, i, 2);
                i += 2;
            } else if ((b ^ 0xE0) >> 4 == 0) {
                buffer.put(bytes, i, 3);
                i += 3;
            } else if ((b ^ 0xF0) >> 4 == 0) {
                i += 4;
            }
        }
        buffer.flip();
        return new String(buffer.array(), "utf-8");
    }

//    public static void main(String args[]) throws UnsupportedEncodingException {
//        System.out.println(filterOffUtf8Mb4("葫志𠅤sz34"));
//        String nickName = "12𠅤葫";
//
//        byte[] t = nickName.getBytes("UTF-8");
//        for (byte tt : t) {
//            System.out.println(tt);
//        }
//        System.out.println("====================");
//        byte[] t1 = nickName.getBytes("UTF-8");
//        for (int i = 0; i < t1.length;) {
//            byte tt = t1[i];
//            if ((tt & 0xE0) == 0xC0) {
//                byte[] ba = new byte[2];
//                ba[0] = tt;
//                ba[1] = t1[i + 1];
//                i++;
//                i++;
//                String result = new String(ba);
//                System.out.println("2个字节的字符");
//                System.out.println("字符为：" + result);
//            } else if ((tt & 0xF0) == 0xE0) {
//                byte[] ba = new byte[3];
//                ba[0] = tt;
//                ba[1] = t1[i + 1];
//                ba[2] = t1[i + 2];
//                i++;
//                i++;
//                i++;
//                String result = new String(ba);
//                System.out.println("3个字节的字符");
//                System.out.println("字符为：" + result);
//            } else if ((tt & 0xF8) == 0xF0) {
//                byte[] ba = new byte[4];
//                ba[0] = tt;
//                ba[1] = t1[i + 1];
//                ba[2] = t1[i + 2];
//                ba[3] = t1[i + 3];
//                i++;
//                i++;
//                i++;
//                i++;
//                String result = new String(ba);
//                System.out.println("4个字节的字符");
//                System.out.println("字符为：" + result);
//            } else {
//                i++;
//            }
//
//        }
//    }
}